`timescale 1ns / 1ps
/*
VGA信号首先需要一个时钟驱动，我们这里使用25MHz的时钟来驱动VGA_CLK。 每个时钟周期扫过一个像素点
在25MHz的时钟周期下总时长为16.8毫秒，对应约每秒约60帧。
我们使用一个简单的分频器来从50MHz的时钟来产生所需的VGA_CLK
该生成器可以按照调用时的参数来生成不同频率的时钟
*/

module clkgen(
    input clkin,
    input rst,
    input clken,
    output reg clkout
    );
    parameter clk_freq=1000;
    parameter countlimit=50000000/2/clk_freq; //自动计算计数次数

  reg[31:0] clkcount;
  always @ (posedge clkin)
    if(rst)
    begin
        clkcount=0;
        clkout=1'b0;
    end
    else
    begin
    if(clken)
        begin
            clkcount=clkcount+1;
            if(clkcount>=countlimit)
            begin
                clkcount=32'd0;
                clkout=~clkout;
            end
            else
                clkout=clkout;
        end
      else
        begin
            clkcount=clkcount;
            clkout=clkout;
        end
    end
endmodule